#ifndef _GAMECOMMAND_H_
#define _GAMECOMMAND_H_

class CGameCommand
{
public:
	enum EActionID
	{
		ACTION_NOCHANGE = 0,
		ACTION_STOP,
		ACTION_MOVE,
		ACTION_ATTACK,
		ACTION_ATTACK_AOE,
		ACTION_CAST,
		ACTION_CAST_AOE,
	};
private:
	int m_clientID;
	int m_time;

	EActionID m_actionType;
	int m_targetID;
	int m_objectID;
	int m_targetX;
	int m_targetY;

protected:
public:
	CGameCommand();
	CGameCommand(int clientID);
	~CGameCommand();

	int getClientID() {return m_clientID;}
	int getTime() {return m_time;}

	EActionID getActionType() {return m_actionType;}
	int getTargetID() {return m_targetID;}
	int getObjectID() {return m_objectID;}
	int getTargetX() {return m_targetX;}
	int getTargetY() {return m_targetY;}

	void init(int time);
	void stop();
	void move(int x, int y);
	void attack(int targetID, int weaponID);
	void attack_aoe(int weaponID, int x, int y);
	void cast(int targetID, int spellID);
	void cast_aoe(int spellID, int x, int y);
};

#endif //_GAMECOMMAND_H_